home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / CLOCK.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  3.1 KB  |  137 lines

  1. 10  ' ********************
  2. 20  ' **      CLOCK     **
  3. 30  ' ********************
  4. 40  '
  5. 50  CLEAR
  6. 60  SCREEN 2
  7. 70  CLS
  8. 80  KEY OFF
  9. 90  DIM NUM(6)
  10. 100  XCENT = 319
  11. 110  YCENT = 99
  12. 120  PI = 3.14159
  13. 130  DEF FNANG(TIME) = PI / 2 - PI * TIME / 30 - 2 * PI * (TIME > 15)
  14. 140  LINE (120,20)-(519,178),1,BF          ' draw big white box
  15. 150  LINE (XCENT,0)-(0,YCENT),0            ' slice off four corners
  16. 160  LINE (XCENT,0)-(639,YCENT),0
  17. 170  LINE (XCENT,199)-(0,YCENT),0
  18. 180  LINE (XCENT,199)-(639,YCENT),0
  19. 190  PAINT (126,20),0                      ' paint out four corners
  20. 200  PAINT (512,175),0
  21. 210  PAINT (512,20),0
  22. 220  PAINT (126,175),0
  23. 230  RADIUS = 179
  24. 240  CIRCLE (XCENT,YCENT),RADIUS,0         ' draw dark circle inside
  25. 250  PAINT (XCENT,YCENT),0                 ' darken entire circle
  26. 260  FOR D = 1 TO 12                       ' put numbers on clock face
  27. 270  GOSUB 800
  28. 280  XD = XCENT + 165 * COS(FNANG(D*5)) - 11 + 3 * (D > 9)
  29. 290  YD = YCENT - 68 * SIN(FNANG(D*5)) - 3
  30. 300  PUT (XD,YD),NUM
  31. 310  NEXT D
  32. 320  LOCATE 1,1
  33. 330  PRINT "F1. Increment hour";
  34. 340  LOCATE 2,1
  35. 350  PRINT "F3. Increment minute";
  36. 360  LOCATE 3,1
  37. 370  PRINT "F5. Increment second";
  38. 380  LOCATE 1,61
  39. 390  PRINT "F2. Decrement hour";
  40. 400  LOCATE 2,61
  41. 410  PRINT "F4. Decrement minute";
  42. 420  LOCATE 3,61
  43. 430  PRINT "F6. Decrement second";
  44. 440  ON KEY(1) GOSUB 860
  45. 450  ON KEY(2) GOSUB 920
  46. 460  ON KEY(3) GOSUB 980
  47. 470  ON KEY(4) GOSUB 1040
  48. 480  ON KEY(5) GOSUB 1100
  49. 490  ON KEY(6) GOSUB 1160
  50. 500  KEY(1) ON
  51. 510  KEY(2) ON
  52. 520  KEY(3) ON
  53. 530  KEY(4) ON
  54. 540  KEY(5) ON
  55. 550  KEY(6) ON
  56. 560  '
  57. 570  WHILE NOT YET.TO.THE.END.OF.ALL.TIME....
  58. 580          WHILE T$ = TIME$
  59. 590          WEND
  60. 600     T$ = TIME$
  61. 610     SECOND2 = SECOND
  62. 620     MINUTE2 = MINUTE
  63. 630     HOUR2 = HOUR
  64. 640     SECOND = VAL(RIGHT$(T$,2))
  65. 650     MINUTE = VAL(MID$(T$,4))
  66. 660     HOUR = (VAL(LEFT$(T$,2)) MOD 12) * 5 + MINUTE / 12
  67. 670     LOCATE 24,37
  68. 680     PRINT T$;
  69. 690     CIRCLE (XCENT,YCENT),140,1,-FNANG(SECOND),-FNANG(SECOND)
  70. 700     CIRCLE (XCENT,YCENT),140,0,-FNANG(SECOND2),-FNANG(SECOND2)
  71. 710     IF MINUTE2 = MINUTE THEN 730
  72. 720     CIRCLE (XCENT,YCENT),120,0,-FNANG(MINUTE2),-FNANG(MINUTE2)
  73. 730     CIRCLE (XCENT,YCENT),120,1,-FNANG(MINUTE),-FNANG(MINUTE)
  74. 740     IF HOUR2 = HOUR THEN 760
  75. 750     CIRCLE (XCENT,YCENT),70,0,-FNANG(HOUR2),-FNANG(HOUR2)
  76. 760     CIRCLE (XCENT,YCENT),70,1,-FNANG(HOUR),-FNANG(HOUR)
  77. 770  WEND
  78. 780  '
  79. 790  ' Subroutine, get a number for putting anywhere
  80. 800  LOCATE 1,1
  81. 810  PRINT D;
  82. 820  GET (0,0)-(22,6),NUM
  83. 830  LINE (0,0)-(22,6),0,BF
  84. 840  RETURN
  85. 850  '
  86. 860  ' Key 1 subroutine
  87. 870  GOSUB 1230
  88. 880  H = (H + 1) MOD 24
  89. 890  GOSUB 1290
  90. 900  RETURN
  91. 910  '
  92. 920  ' Key 2 subroutine
  93. 930  GOSUB 1230
  94. 940  H = (H + 23) MOD 24
  95. 950  GOSUB 1290
  96. 960  RETURN
  97. 970  '
  98. 980  ' Key 3 subroutine
  99. 990  GOSUB 1230
  100. 1000  M = (M + 1) MOD 60
  101. 1010  GOSUB 1290
  102. 1020  RETURN
  103. 1030  '
  104. 1040  ' Key 4 subroutine
  105. 1050  TEMP$ = MID$(STR$((VAL(MID$(TIME$,4))+59)MOD 60),2)
  106. 1060  M = (M + 59) MOD 60
  107. 1070  GOSUB 1290
  108. 1080  RETURN
  109. 1090  '
  110. 1100  ' Key 5 subroutine
  111. 1110  GOSUB 1230
  112. 1120  S = (S + 1) MOD 60
  113. 1130  GOSUB 1290
  114. 1140  RETURN
  115. 1150  '
  116. 1160  ' Key 6 subroutine
  117. 1170  GOSUB 1230
  118. 1180  S = (S + 59) MOD 60
  119. 1190  GOSUB 1290
  120. 1200  RETURN
  121. 1210  '
  122. 1220  ' Subroutine, convert TIME$ into H,M,S
  123. 1230  H = VAL(LEFT$(TIME$,2))
  124. 1240  M = VAL(MID$(TIME$,4))
  125. 1250  S = VAL(RIGHT$(TIME$,2))
  126. 1260  RETURN
  127. 1270  '
  128. 1280  ' Subroutine, format H,M,S for input to TIME$
  129. 1290  CLOCK$ = MID$(STR$(S),2)
  130. 1300  IF S < 10 THEN CLOCK$ = "0" + CLOCK$
  131. 1310  CLOCK$ = MID$(STR$(M),2) + ":" + CLOCK$
  132. 1320  IF M < 10 THEN CLOCK$ = "0" + CLOCK$
  133. 1330  CLOCK$ = MID$(STR$(H),2) + ":" + CLOCK$
  134. 1340  IF H < 10 THEN CLOCK$ = "0" + CLOCK$
  135. 1350  TIME$ = CLOCK$
  136. 1360  RETURN
  137.